import textHtml from 'ngtemplate!html!../../../tpls/validation/text.html';
import dialogHtml from 'ngtemplate!html!../../../tpls/dialog/success.dialog.html';

class RaceInfoController {
    constructor($rootScope, $scope, $cookieStore, $timeout, $state, ngDialog, dialogService, RaceService, fileReader, getDistrict, getRaceDetail, iRunner){

    	var vm = this;

    	vm.$rootScope    = $rootScope;
    	vm.$cookieStore  = $cookieStore;
    	vm.$timeout 	 = $timeout;
    	vm.$state   	 = $state;
    	vm.ngDialog 	 = ngDialog;
    	vm.dialogService = dialogService;
    	vm.RaceService   = RaceService;
    	vm.fileReader    = fileReader;
    	vm.getDistrict   = getDistrict;
    	vm.getRaceDetail = getRaceDetail;
    	vm.iRunner 	     = iRunner;

    	vm.textHtml = textHtml;

        // 预览
        vm.preview = () => {
            vm.ngDialog.open({
                template: '<img src="./images/preview.jpg" alt="" class="img-responsive" />',
                className: 'ngdialog-theme-default ngdialog-alert ngdialog-success',
                plain: true
            });
        }
        
    	// 赛事状态列表
        vm.race_status_list = vm.iRunner.raceStatusConfig;

        // 获取省市区列表数据
        if (vm.getDistrict.code==0) {
            vm.province = vm.getDistrict.data;
        }

        // 根据省ID获取当前城市列表数据
        vm.onChangeProvince = function(search) {
            vm.RaceService.getDistrict(search.id)
            .then(function(data) {
                if (data.code==0) {
                    vm.cities = data.data;
                }
                console.log(data)
                console.log(search.id)
            }, function(data) {
                console.log('error')
            });
        }

        // 根据城市ID获取当前街道列表数据
        vm.onChangeCity = function(search) {
            vm.RaceService.getDistrict(search.id)
            .then(function(data) {
                if (data.code==0) {
                    vm.district = data.data;
                }
                console.log(data)
                console.log(search.id)
            }, function(data) {
                console.log('error')
            });
        }
        
        // 表单数据初始化
        vm.race = {
            race_short_name: '',
            race_name: '',
            race_event_date: '',
            race_start_time: '',
            race_province: '',
            race_city: '',
            race_district: '',
            race_address: '',
            race_logo: '',
            race_show: true,
            live_show: false,
            search_result_show: false,
            status: vm.race_status_list[0]
        }

        // 获取赛事详情
        if (vm.getRaceDetail.code==0) {

        	var Detail = vm.getRaceDetail.data;

            vm.race.race_short_name = Detail.short_name;
            vm.race.race_name       = Detail.disp_name;
            vm.race.race_event_date = moment(Detail.start_time)._d;
            vm.race.race_start_time = moment(Detail.start_time)._d;
            vm.imageSrc2            = Detail.background_image;
            vm.imageSrc             = Detail.race_logo;
            
            // 遍历省级列表, 渲染第一级联动
            angular.forEach(vm.province, function(value, index) {
                if (Detail.province == value.name) {
                    vm.race.race_province   = value;
                    
                    // 根据省ID获取当前城市列表数据
                    vm.RaceService.getDistrict(value.id)
                    .then(function(data2) {
                        if (data2.code==0) {
                            vm.cities = data2.data;

                            // 遍历当前城市列表, 渲染第二级联动
                            angular.forEach(data2.data, function(value, index) {
                                if (Detail.city == value.name) {
                                    vm.race.race_city   = value;

                                    // 根据城市ID获取当前街道列表数据
                                    vm.RaceService.getDistrict(value.id)
                                    .then(function(data3) {
                                        if (data3.code==0) {
                                            vm.district = data3.data;

                                            // 遍历当前街道列表, 渲染第三级联动
                                            angular.forEach(data3.data, function(value, index) {
                                                if (Detail.area == value.name) {
                                                    vm.race.race_district   = value;
                                                }
                                            });
                                        }
                                    }, function(data3) {
                                        console.log('error')
                                    });

                                }
                            });

                        }
                    }, function(data2) {
                        console.log('error')
                    });    
                }
            });
            
            // 是否显示赛事、是否显示赛事直播、是否显示赛事成绩查询
            vm.race.race_show          = Detail.race_show == 'yes';
            vm.race.live_show          = vm.race.race_show && Detail.live_show == 'yes';
            vm.race.search_result_show = vm.race.race_show && Detail.search_result_show == 'yes';

            // 遍历赛事状态列表，渲染页面
            vm.race.race_show && angular.forEach(vm.race_status_list, function(value, index) {
                if (value.value==Detail.status) {
                    vm.race.status = value
                }
            });
        }
        
        // 监听日期变化
        $scope.$watch(angular.bind(vm, function() {
            return vm.race.race_event_date
        }), function(newValue, oldValue) {
            if (newValue) {
                angular.element(document.getElementsByName('raceDate')).removeAttr("style")
            }
        });

        // 监听时间变化
        $scope.$watch(angular.bind(vm, function() {
            return vm.race.race_start_time
        }), function(newValue, oldValue) {
            if (newValue) {
                angular.element(document.getElementsByName('raceTime')).removeAttr("style")
            }
        });
        
        // 表单提交
        vm.submitForm = function(isValid) {

            // 验证失败, 提示用户
            if (!isValid) {

                if (!vm.race.race_short_name) {
                    $.blink(angular.element(document.getElementsByName('raceShortName')), 5, 100)
                } else if (!vm.race.race_name) {
                    $.blink(angular.element(document.getElementsByName('raceName')), 5, 100)
                } else if (!vm.race.race_event_date) {
                    $.blink(angular.element(document.getElementsByName('raceDate')), 5, 100)
                } else if (!vm.race.race_start_time) {
                    $.blink(angular.element(document.getElementsByName('raceTime')), 5, 100)
                }
                
            }

            // 验证通过
            if (isValid) {

                // 拼接POST数据格式
                var params = {
                    short_name: vm.race.race_short_name,
                    disp_name: vm.race.race_name,
                    start_time: moment(vm.race.race_event_date).format('YYYY-MM-DD') + ' ' + moment(vm.race.race_start_time).format('HH:mm:ss'),
                    province: vm.race.race_province?vm.race.race_province.id:'0',
                    city: vm.race.race_city?vm.race.race_city.id:'0',
                    area: vm.race.race_district?vm.race.race_district.id:'0',
                    bg: vm.myFile2,
                    logo: vm.myFile,
                    race_show: vm.race.race_show ? 'yes' : 'no',
                    live_show: vm.race.race_show && vm.race.live_show ? 'yes' : 'no',
                    search_result_show: vm.race.race_show && vm.race.search_result_show ? 'yes' : 'no'
                    // ,
                    // status: vm.race.race_show ? vm.race.status.value : 'notstart'
                }

                console.log(params)

                // 更新赛事
                vm.RaceService.postRaceUpdate(params, vm.$cookieStore.get('access_token'), vm.$state.params.race_id)
                .then(function(data) {

                    // 成功调用
                    if (data.code==0) {

                        // 模态框提示文本
                        $scope.text = '更新成功';

                        // 提示用户成功调用
                        vm.ngDialog.open({
                            template: dialogHtml,
                            className: 'ngdialog-theme-default ngdialog-alert ngdialog-success',
                            scope: $scope
                        });

                        // 延迟1.5秒后, 关闭模态框并跳转路由至赛事列表页面
                        vm.$timeout(function() {
                            vm.ngDialog.close();

                            if (vm.$state.current.name=='dashboard.race.basic') {
                                vm.$state.go('dashboard.race.index');
                            } else {
                                vm.$state.go('dashboard.list', {company_id: vm.$state.params.company_id});
                            }
                            
                        }, 1500)
                    }

                    // 调用失败, 提示用户
                    (data.code!=0&&data.code!=-1001)&&vm.dialogService.error(data.message);

                    // 登录信息已过期, 请重新登录
                    data.code==-1001&&vm.dialogService.error(data.message, true);

                    console.log(data)
                }, function(data) {
                    console.log('error')
                });

            }
            
            return false;
        }

        // 获取上传图片的地址url，用以实现预览图片
        vm.getFile = function () {
            vm.fileReader.readAsDataUrl($scope.file, $scope)
            .then(function(result) {
                console.log($scope.file)

                //判断附件是否为图片
                if(!/image\/\w+/.test($scope.file.type)){
                    vm.dialogService.error('图片类型必须是.gif,jpeg,jpg,png中的一种哦');
                    return false;
                } else {
                    vm.imageSrc = result;
                }
                
            }, function(data) {
                console.log('error')
            });
        }

        // 获取上传图片的地址url，用以实现预览图片
        vm.getFile2 = function () {
            vm.fileReader.readAsDataUrl($scope.file, $scope)
            .then(function(result) {
                console.log($scope.file)

                //判断附件是否为图片
                if(!/image\/\w+/.test($scope.file.type)){
                    vm.dialogService.error('图片类型必须是.gif,jpeg,jpg,png中的一种哦');
                    return false;
                } else {
                    vm.imageSrc2 = result;
                }
                
            }, function(data) {
                console.log('error')
            });
        }

    }
}

RaceInfoController.$inject = ['$rootScope', '$scope', '$cookieStore', '$timeout', '$state', 'ngDialog', 'dialogService', 'RaceService', 'fileReader', 'getDistrict', 'getRaceDetail', 'iRunner']; 

export default RaceInfoController;